home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / editor / proged10.lha / InstallProgED / sources / PED_Scan / ScanStruct.c < prev   
C/C++ Source or Header  |  1995-09-24  |  1KB  |  76 lines

  1.  
  2. /***** Include vari *****/
  3.  
  4. #include "ProgED:sources/include/Ped.h"
  5.  
  6.  
  7.  
  8. /*****
  9.  *
  10.  * FUNZIONE:    ULONG SAVEDS ASM main(char *line,char *sectionname)
  11.  *
  12.  * SCOPO:    Cerca un riferimento ad una struttura C nella linea puntata
  13.  *        da "line". Il nome del riferimento viene copiato in
  14.  *        "sectionname".
  15.  *
  16.  * NOTA:    Utilizza SEMPRE la funzione geta4() o la direttiva __saveds!
  17.  *
  18.  * RESTITUISCE: Lunghezza della stringa copiata in "sectionname".
  19.  *        0=riferimento non trovato.
  20.  *
  21.  ****/
  22.  
  23. ULONG SAVEDS ASM main(RG(a0) char *line,RG(a1) char *sectionname)
  24. {
  25.     char    *p,
  26.         *q,
  27.         *q1,
  28.         *d;
  29.     int    i;
  30.  
  31.  
  32.  
  33.     p=line;
  34.  
  35.     /***** Controlla che la linea inizi per 'struct' *****/
  36.     if (*p)
  37.     {
  38.         if (p[0]=='s')
  39.         if (p[1]=='t')
  40.         if (p[2]=='r')
  41.         if (p[3]=='u')
  42.         if (p[4]=='c')
  43.         if (p[5]=='t')
  44.         {
  45.             /***** Se si, salta fino a trovare la prossima
  46.                 parola saltando spazi e TAB *****/
  47.             p+=6;
  48.             while((*p==32)||(*p==9))    p++;
  49.  
  50.             /***** Copia la parola fino al prossimo spazio
  51.                 o TAB e ritorna in D0 la lunghezza. *****/
  52.             if (*p)
  53.             {
  54.                 q=p;
  55.                 while((*q!=32)&&(*q!=9)&&(*q))    q++;
  56.  
  57.                 q1=q;
  58.  
  59.                 if (*q)    while((*q==32)||(*q==9))    q++;
  60.  
  61.                 if ((!(*q))||(*q=='{'))
  62.                 {
  63.                     d=sectionname;
  64.                     for(i=0;i<q1-p;i++)    *d++=p[i];
  65.                     *d='\0';
  66.                     return(q1-p);
  67.                 }
  68.             }
  69.         }
  70.     }
  71.  
  72.     /***** Nulla da fare! *****/
  73.     return(0);
  74. }
  75.  
  76.